feat(agent): show completed work without reopening the full thread - #2941
feat(agent): show completed work without reopening the full thread#2941BradGroux wants to merge 1 commit into
Conversation
daef386 to
fcb0ede
Compare
|
I rebased this branch onto current The structured handoff remains relevant and does not overlap the newer invite or Markdown parser changes on Head Verification was refreshed against the rebased tree: the full affected Rust package suites, all 3,737 Desktop JavaScript tests, Desktop typecheck and E2E build, strict Rust formatting/Clippy, and targeted Biome checks passed. A live relay submission was not rerun, so the proof remains the signed-event round trip plus the existing relay submission path. |
fcb0ede to
7d1c3bc
Compare
|
Rebased this branch onto current Head moved from Verification:
GitHub checks are rerunning on the new head. |
Co-authored-by: Brad Groux <bradgroux@hotmail.com> Signed-off-by: Brad Groux <bradgroux@hotmail.com>
7d1c3bc to
3723086
Compare
|
Rebased onto current A clean-context review found three gaps that are now repaired:
Exact-head verification on
No live remote relay was used. A complete relay library run reached 825 passed and 35 ignored, but nine unchanged admin/media tests could not acquire their local Postgres fixture ( |


Closes #2932.
Observed problem
Buzz already has signed agent job events, but
kind:43004results are opaque strings. A requester has to reconstruct the requested outcome, final state, artifacts, verification, and blockers from the full thread, and Home can expose structured content as raw JSON.What changes
JobResultPayloadcontract with dispositions, typed artifact references, verification results, explicit blockers, byte and item limits, unsafe-reference rejection, and cross-field invariants.buzz jobs handoff --channel <uuid> --job <event-id> --manifest <path|->.43001through43006job lifecycle at the relay under channel-scopedmessages:writeauthorization.43004content on the existing Markdown fallback.docs/nips/NIP-AJ.md.Trust and compatibility
The signed content is authoritative, while schema and disposition tags are query hints. Desktop only trusts structured content when the payload event ID matches the single signed reply tag.
Artifact references fail closed. URL-shaped references are parsed before kind-specific validation, including artifact kinds that also accept raw branch, canvas, workflow-output, or free-form references. Credential-bearing URLs, POSIX absolute paths, Windows rooted paths, drive-letter paths, and UNC paths are rejected in both Rust and Desktop instead of becoming clickable or relay-visible handoff data.
Version 1 ignores additive unknown object fields. Older clients continue to see JSON content as ordinary text, and newer clients continue to render legacy plaintext results as Markdown.
Verification
Verified on exact head
372308646b32fff1fe2324c7977c8207e0992d04, rebased onto currentmainatb1b283cd4c7f926e12eeee8ae1f38c7471922b16:buzz-core,buzz-sdk, andbuzz-clipassed.The SDK signing test round-trips the canonical payload through the signed event shape. A complete relay library run reached 825 passed and 35 ignored, but nine unchanged admin/media tests could not acquire their local Postgres fixture (
Sqlx(PoolTimedOut)); an isolated rerun reproduced the same missing-fixture failure. A live remote relay integration run was not performed.Non-goals